#ifndef LOGICUNARYOP_H
#define LOGICUNARYOP_H
#include "booleanExpression.h"
#include <string>

/*Class: LogicUnaryOperation
 *	A Class that represents a binary operation for Boolean Expressions
 *See Also: <BooleanExpression> <Expression>
 */
class LogicUnaryOperation: public BooleanExpression {

protected:
	 /* Variable Operand:
	  *	the operand of the operation
	  */
	 Expression * Operand;
	 /* Variable operatorRepresentation:
	  * 	String representation of the operator
	  */
	 std::string operatorRepresentation;
public:
	/*Constructor:LogicUnaryOperation
	 * Initialize the object with the specified parameters.
	 * Parameters:
	 * 	opRep	- The string representation of the operator.
	 * 	expression - The boolean expresion of the operation.
	 */
	LogicUnaryOperation(std::string opRep = "", Expression * expression = NULL);

	LogicUnaryOperation(const LogicUnaryOperation & other);

	virtual ~LogicUnaryOperation();

	virtual Expression * clone();

	std::string toString();

	Expression * getExpression();

	void setExpression(Expression * expression);

	void setOperator(const std::string & opRep);

	std::string getOperator();
};
#endif
